The use of computer networks has become an integral part of the way businesses provide goods and services to their customers. One advantage the use of the network provides is to enable the distribution of applications, and the business logic that they are comprised of, closer to the actual user or customer. This enables these businesses to offer higher levels of service to disparate groups of customers in a wider geographic area than ever before. This has also enabled businesses to allow customers access to the business network, albeit limited, for example, to directly track their purchases. In this case, each customer may have access to standardized or “tailored” application software packages or to custom developed software packages to perform desired operations.
However, as businesses and their customers take advantage of their networks and their networks expand, either in a planned manner or by the acquisition of other networks, the number of application packages may increase significantly. In some cases, the state of all the application packages, e.g., “running,” “installed but non-running,” and their locations may not be known or appreciated; particularly for those application packages that may be tailored or those that have narrow usage. In addition, enterprise applications, telecom services and other such services, need not be isolated entities existing on a single host, but rather may be distributed with dependent components present on multiple hosts within their enterprise and sometimes even spanning enterprises. In order to determine the existence of the applications and/or their state, it is often required to discover many of the distributed pieces or components and the relationships between them, i.e., the application's “topology,” and further to make a determination whether the application has indeed been found. This is not a straightforward task as the variability in configuration and deployment options for these applications is high. For example, to discover simple processes that are running in a UNIX based system, a user may use a command line tool, e.g., an instruction, such as UNIX command “ps” to “dump the process table.” This command line tool creates a list of processes executing on a specific host on the network. The list may then be filtered using the UNIX “grep” command line with known search criteria. This specific methodology is, of course, of limited value as it is unable to discover non-running applications and does not discover the applications topology (i.e., the relationships among distributed application components). More sophisticated tools, referred to as agents, may be built or created to probe still deeper into the components and their relationships. However, as in the prior example there is no knowledge of what the relationships among multiple processes are and only currently running processes may be discovered.
Thus, as the network expands it can become bloated with forgotten application packages that may have little or no usage, but are left in place as the consequence of their removal is unknown. On the other hand, leaving unused applications where they are installed may cause harm by consuming valuable disk space and/or if running also consuming valuable CPU cycles. Most importantly, there are critical applications that must be running with optimal performance for a business to service their customers and effectively run their operation.
Hence, there is a need in the industry for a method and system for discovering, classifying and testing (DCT) network-based application programs in order to maintain the company's business processes, the identified applications that run them and the networks that they are resident upon.